The Blum-Micali algorithm is a cryptographically secure pseudorandom number generator. The algorithm gets its security from the difficulty of computing discrete logarithms.[1]
Let be an odd prime, and let be a primitive root modulo . Let be a seed, and let
.
The th output of the algorithm is 1 if . Otherwise the output is 0.
In order for this generator to be secure, the prime number needs to be large enough so that computing discrete logarithms modulo is infeasible.[1] To be more precise, any method that predicts the numbers generated will lead to an algorithm that solves the discrete logarithm problem for that prime [2]
There is a paper discussing possible examples of the quantum permanent compromise attack to the Blum-Micali construction. This attacks illustrate how a previous attack to the Blum-Micali generator can be extended to the whole Blum-Micali construction, including the Blum-Blum-Shub and Kaliski generators.[3]